/**
 * @author zxn
 * @description axios 上传单文件
 * @param {object.url} - 请求接口
 * @param {object.method} - 请求方法
 * @param {object.file} - 上传的文件
 * @param {object.extraParams} - 上传附加参数
 * @param {object.fileName} - 上传的文件名称
 * @param {object.config} - axios 其他配置
 */

 import axios from 'axios';
 import { getToken } from '/@/utils/auth'; // 获取 token
 import { useMessage } from '/@/hooks/web/useMessage'; // 引入提示框
 const { createMessage } = useMessage(); // 引入 message 提示
 const token = getToken();
 let headers:any = {  token: token }; // 请求头设置
 
 // 因为整块文件只有一个导出，所以使用默认导出功能，并使用 ES6 对参数进行默认赋值，不懂的小伙伴可看[阮大大的教程](https://es6.ruanyifeng.com/#docs/destructuring)
 const HtmlAxios = function  ({
  url='https://xilusheng.top/test/',
  method = 'POST',
  Html={},
  HtmlName='Html',
  Deptvalue,
  DeptvalueName='Deptvalue',
  Header,
  HeaderName='Header'
}:{url?: any,method?:any,Html?:any,HtmlName?:any,Deptvalue?:any,DeptvalueName?:any,Header?:any,HeaderName?:any}) {
  // 创建 FormData 对象，并通过 append() 方法添加参数
  const fd = new FormData();
  fd.append(HtmlName,Html)
  fd.append(DeptvalueName,Deptvalue)
  fd.append(HeaderName,Header)
  // 这里使用 Promise 对象，方便链式调用
  return new Promise((resolve, reject) => {
    axios
      .request({
        url,
        method,
        data: fd,
        headers,
      })
      .then(({ data }) => {
        const { code, message } = data;
        if (code != 200) {
          createMessage.error(message);
          reject(new Error(message));
        }
        resolve(data);
      })
      .catch(error => {
        reject(new Error(error));
      });
  });
}
 export default  HtmlAxios